// import Components from 'unplugin-vue-components/vite'
// import {AntDesignVueResolver} from 'unplugin-vue-components/resolvers'
import {defineConfig, loadEnv} from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path";
import vueI18n from '@intlify/vite-plugin-vue-i18n'

import viteCompression from 'vite-plugin-compression';


export default defineConfig(({command, mode}) => {
    // 根据当前工作目录中的 `mode` 加载 .env 文件
    // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
    const env = loadEnv(mode, process.cwd(), '')

    return {
        base: env.VITE_PUBLIC_PATH,
        //
        plugins: [
            vue(),
            vueI18n({
                include: path.resolve(__dirname, 'src/common/language/**')
            }),
            // 打包压缩，主要是本地gzip，如果服务器配置压缩也可以
            viteCompression(),
            //antd按需引入莫名报错
            // Components({
            //     resolvers: [
            //         AntDesignVueResolver(),
            //     ],
            // }),
        ],
        //
        resolve: {
            alias: {
                "@": path.resolve(__dirname, "src"),
                "public": path.resolve(__dirname, "./public"),
            },
        },
        //
        server: {
            host: '127.0.0.1',
            port: 7000,
            open: true, // 服务启动时是否自动打开浏览器
            cors: true, // 允许跨域
            strictPort: true,//端口被占用时自动退出
            // proxy: {
            //     '/dev-api': {
            //         target: loadEnv(mode, process.cwd()).VITE_SERVER_URL,
            //         changeOrigin: true,
            //         pathRewrite: {'^/dev-api': ''},
            //         ws: true, // proxy websockets
            //     },
            // }
        },
        //
        css: {
            preprocessorOptions: {
                less: {
                    javascriptEnabled: true,
                    modifyVars: {
                        hack: `true; @import (reference) "${path.resolve('src/common/style/theme.less')}";`,
                    }
                }
            }
        },
        //
        build: {
            // assetsDir: './static',
            chunkSizeWarningLimit: 500,
            minify: 'esbuild',
            cssCodeSplit: true, // 如果设置为false，整个项目中的所有 CSS 将被提取到一个 CSS 文件中
            terserOptions: {
                compress: {
                    // warnings: false,
                    drop_console: true,  //打包时删除console
                    drop_debugger: true, //打包时删除 debugger
                    pure_funcs: ['console.log'],
                },
                output: {
                    // 去掉注释内容
                    comments: true,
                },
            },
            rollupOptions: {
                output: {
                    manualChunks: {
                        // 拆分代码，这个就是分包，配置完后自动按需加载，现在还比不上webpack的splitchunk，不过也能用了。
                        vue: ['vue', 'vue-router', 'vuex'],
                        // vant: ['vant'],
                        // echarts: ['echarts'],
                    },
                },
            },
            brotliSize: false,
        },
    }
})




